
//
//  ZQTabBar.m
//  BuDeJie
//
//  Created by 仲琦 on 16/4/2.
//  Copyright © 2016年 仲琦. All rights reserved.
//

#import "ZQTabBar.h"

@interface ZQTabBar ()

@property(nonatomic , weak)UIButton *addBtn;


/**   上次点按属性  */
@property (nonatomic ,weak)UIControl *previousClickTabBarButton;

@end

@implementation ZQTabBar

//懒加载按钮
- (UIButton *)addBtn
{
    if (_addBtn == nil) {
        //创建按钮
        UIButton *addBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        //设置按钮图片
        [addBtn setImage:[UIImage imageNamed:@"tabBar_publish_icon"] forState:UIControlStateNormal];
        [addBtn setImage:[UIImage imageNamed:@"tabBar_publish_click_icon"] forState:UIControlStateHighlighted];
        //尺寸自适应
        [addBtn sizeToFit];
        //添加到控件中
        [self addSubview:addBtn];
        //给属性赋值
        _addBtn = addBtn;
        
    }
    //返回属性
    return _addBtn;
}


//设置位置
- (void)layoutSubviews
{
    //初始化
    [super layoutSubviews];
    
    //取出UITabBarItems的数量
    NSInteger count = self.items.count + 1;
    
    //取出尺寸大小
    CGFloat btnX = 0;
    CGFloat btnY = 0;
    CGFloat btnW = self.bounds.size.width / count;
    CGFloat btnH = self.bounds.size.height;
    
    //设置计数器
    int i = 0;
    
    //遍历TabBar中的子控件
    for (UIControl *tabBarBtn in self.subviews) {
       
        //发现系统有这个类,但是就是敲不出来,说明这个类 私有API
        
         //判断是否为TabBar按钮 ,不是就跳过
        if (![tabBarBtn isKindOfClass:NSClassFromString(@"UITabBarButton")])  continue;
        
        
        //判断如果为TabBar为第0个且上次点击按钮为空   就把第0个按钮赋值给上次点击按钮
        if (i == 0 && self.previousClickTabBarButton == nil) {
            self.previousClickTabBarButton = tabBarBtn;
        }
        
        
            //空出TabBar中间的区域,给其余按钮添加尺寸
            if (i == 2) {
                i += 1;
            }
            btnX = btnW * i ;
            
            tabBarBtn.frame = CGRectMake(btnX, btnY, btnW, btnH);
            
            i++;
        
        //点击实现方法
        [tabBarBtn addTarget:self action:@selector(TabBarBtnClick:) forControlEvents:UIControlEventTouchUpInside];
        
    }
    
    //设置 自定义按钮的中心点
    self.addBtn.center = CGPointMake(self.bounds.size.width *0.5, self.bounds.size.height *0.5);
}



- (void)TabBarBtnClick:(UIControl *)tabBarBtn
{
      //判断 是否与上次点击按钮的属性 相等  相等就发出通知
    if (self.previousClickTabBarButton == tabBarBtn) {
        //发出通知
        [[NSNotificationCenter defaultCenter] postNotificationName:@"ZQTabBarButtonDidRepeatClickNotification" object:nil];
    }
    
    //赋值给属性
    self.previousClickTabBarButton = tabBarBtn;
    
}



@end
